home *** CD-ROM | disk | FTP | other *** search
- Here's a quick list of features in 1.5 that aren't in 1.4
-
- - Under MS-DOS, no system variables are accessed directly.
- - Elvis now works under VMS.
- - The "file is busy" limitation has been removed.
- - Control-V quoting is more compatible with the real vi.
- - The ":set warn" warning is only output on a ":!" or ":sh" command that isn't
- being used as a filter.
- - Function keys can be easily mapped in a terminal-independent way. The
- ":mkexrc" command will then save the mappings in a terminal-independent way.
- - The `ctags` program has been modified to support ANSI C (somewhat).
- - The `ref` program has been modified. It no longer needs a "refs" file
- - A new ":color" command allows you to control which colors elvis uses.
- (This only works right on PCs... running any operating system, though!)
- - The ":set remap" option is now supported. Elvis allows recursive macros!
- - A new option, ":set ruler", has been added. It causes elvis to constantly
- display the current line/column numbers.
- - Many small changes have been made to bring elvis a little closed to POSIX.
- - In visual commannd mode, the new 'v' and 'V' commands let you *visibly*
- mark the text that you want to apply a c/d/y/</=/>/\ command to.
- - The \ key is a new operator command. It brings up a small menu.
- - The = key is now an operator command that sends the selected text through
- a predefined filter program. The default filter is "fmt", but you can change
- it via ":set equalprg=indent" or whatever.
- - A clone of "fmt" is included.
- - You can now move directly to a given percentage of the way through the file,
- via a command such as "50%". (The numberless % command still works, too.)
- - Regular expressions now support the \{n\} and \{n,m\} closure operators.
- - File preservation and recovery is now handled in a more vi-like way.
- - Keyboard timeouts are now handled in a better way on SysV and BSD unices.
-
-
- The main goals of 1.5 have been to fix bugs, improve portability,
- increase compatibility with the real vi, and add a few useful
- extensions. Most of the extensions can be individually disabled by
- compile-time options, if you like.
-
- My favorite extension is a new *visible* way to select text to delete,
- yank, or whatever. In visual command mode, if you hit 'v', then the
- character under the cursor is hilighted. As you move the cursor around,
- all text from the 'v' spot to the current cursor position is hilighted.
- When you've moved the cursor to the end of the text you want to act on,
- you just need to hit one of the operator keys once. For example,
- "vwwwd" is approximately the same as "3dw". To cancel the selection
- without doing anything to the text, hit 'v' a second time.
-
- The uppercase 'V' key does the same thing with whole lines, instead of
- characters. E.g., "Vjjjjj>" is a lot like ">5j" or "6>>".
-
- The '\' key is a new operator which pops up a menu from which you can
- choose any of the most common operations.
-
- All three of these can be mapped using the "visual" hack. This allows
- them to be used while you're in input mode. Also, I've experimented
- with using them in conjunction with a mouse, with the mouse configured
- like this: mouse movement simulates repeated pressings of the arrow
- keys, and the buttons send unique escape codes when pressed and when
- released. I mapped the left and right buttons to send 'v' and 'V'
- (respectively) when pressed, and '\' when released. This gives elvis a
- reasonably nice mouse interface, since the '\' pop-up menu is clever
- enough allow selection via arrow keys (mouse movement) and the '\' key
- (mouse button).
-
- The '%' movement command can now accept a "count" argument. A plain "%"
- still moves to the matching parenthesis, as always, but "50%" moves the
- cursor to approximately half way through the file. I figured this might
- provide a nice hook for adding support for a slider bar in a windowing
- system, but I haven't actually tried it. For a similar reason,
- control-X now moves the cursor to a given screen column (taking
- side-ways scrolling into account), which I figured might be useful in
- conjuction with the 'H' command for adding simple cursor positioning in
- a windowing system. If the user clicks on row 5 column 27, then you
- could stuff "5H27^X" into the type-ahead queue, and elvis would move the
- cursor there.
-
- The '=' key is a new operator which filters the affected text through an
- external program. It is similar to the '!' command, except that '='
- uses a predefined command instead of asking you each time. The default
- program is "fmt", and you can change it via ":set ep=foo". A version of
- "fmt" is included. (In case you didn't know: fmt performs simple paragraph
- reformatting and word wrap.)
-
- There is a new ":color" command. Its usage should be fairly intuitive.
- Try ":color light cyan on blue" first, and then ":color" with no arguments.
-
- There are several new :set options. Most of them are SysV compatible.
- One nice extension is ":set ruler", which causes the row and column
- number to be continuously displayed on the bottom line of the screen.
-
- The ctags command has been modified to work better with "new style"
- function definitions. Also, it has been extended to allow typedefs and
- static (local) definitions to be included.
-
- The ref command has also been improved. Also, it has been extended to
- work well with the "static tags" option of the new ctags program. You
- are no longer forced to have a separate "refs" file (although you can if
- you want) because ref now reads the "tags" file and then looks up the
- function header. Elvis can be configured to call the "ref" program to
- perform tag lookup, so elvis can benefit from the more sophisticated
- lookup that "ref" offers.
-
- Regular expressions can now handle \{m\} and \{m,n\} notation. The
- \{m\} operator means "the preceding single-character expression must be
- repeated exactly m times." The \{m,n\} notation means "the preceding
- single-character expression must be repeated at least m times, but no
- more than n times." If m is missing, it defaults to 0. If n is
- missing, it defaults to infinity. So "^-\{80\}$" matches a line of
- exactly 80 hyphens, and "[A-Za-z]\{10,\}" matches any word that has 10
- or more characters.
-
- The ttyread() function has been modified. It is now passed a "timeout"
- argument. This argument should be 0 to never timeout, or the amount of
- time to allow for a keystroke, expressed in tenths of a second. For
- SysV UNIX, this is implemented via VMIN/VTIME. For BSD, it uses
- select(). For other UNIX flavors, it uses the old SIGALRM trick and has
- poorer time resolution. All three UNIX versions are in the file
- "unix.c".
-
- File preservation and recovery is now handled in a more vi-like way. A
- program called elvprsv extracts the text from a temp file and stores it
- in the /usr/preserve directory. A separate program called "elvrec" is
- used to recover the file -- move it from /usr/preserve to the current
- directory. Sadly, this makes installation more complex.
-
- The tinytcap.c file has been completely rewritten, to make it smaller and
- more maintainable. More terminal descriptions are included in it now.
-
- The ":set remap" option is now supported. Many of the more complex macro
- packages depend on this option. Also, support for maps and abbreviations
- has been merged into a single, more cohesive package. Abbreviations work
- a little better now than they did before.
-